<?php
/**
 * Modelo de relatórios para envios de newsletter
 * @author Emanuel Melo e Renato Lenz @ PC4 Team
 */
class PC4_Newsletter_Relatorio extends Model {
	
	/**
	 * Construtor
	 */
	function __construct() {
		parent::__construct();
	}
	
	function listaEnvios($id_cliente, $pagina = 1, $registros = 20) {
		$ie_model = new PC4_Crud_Newsletter_InformacaoEnvio();
		$e_model = new PC4_Crud_Newsletter_Envio();
		
		$rs = $e_model->listaDoCliente($id_cliente, $pagina, $registros);
		$total = $e_model->getTotalRegistros();
		
		foreach ($rs as $r) {
			$this->db->order_by("data_envio", "DESC");
			$rs_data = $ie_model->consulta("id_envios = $r->id", 1, 1);
			$r->data_conclusao = $rs_data[0]->data_envio;
		}
		$rs['total_registros'] = $total;

		return $rs;
	}
	
	function listaInformacoesEnvio($id_envio, $pagina = 1, $registros = 20) {
		$ie_model = new PC4_Crud_Newsletter_InformacaoEnvio();
		
		$rs = $ie_model->consulta("id_envios = $id_envio", $pagina, $registros);

		foreach ($rs as $r) {
			if ($r->status == 1 && !empty($r->data_entrega)) {
				$r->status = "Entregue ao cliente";
			}
			elseif ($r->status == 1 && !empty($r->api_id_msg)) {
				if (empty($r->api_return_code)) {
					$r->status = "Entregue ao servidor";
				}
				else {
					$r->status = "Erro c&oacute;digo $r->api_return_code";
				}
			}
			elseif ($r->status == 0) {
				$r->status = "Pendente";
			}
		}
		
		return $rs;
	}
	
	function exportaRelatorio($id_cliente) {
		$excel_model = new PC4_Util_Excel();
		
		$rs = $this->listaEnvios($id_cliente,1,-1);
		unset($rs['total_registros']);
		$cabecalhos = array(
				'titulo' => 'Título',
				'data_inicio' => 'Data de Início',
				'data_conclusao' => 'Data de Conclusão',
				'quantidade' => 'Quantidade',
				'status' => 'Status',
				'n_erros' =>'Nº Erros',
				'mensagem' => 'Mensagem'
			);
//d($rs);		
		$registros = array();
		foreach ($rs as $r) {
			$registros[] = array(
				'titulo' => $r->assunto,
				'data_inicio' => $r->data_inicio,
				'data_conclusao' => $r->data_conclusao,
				'quantidade' => $r->enviados + $r->nao_enviados,
				'status' => $r->status,
				'n_erros' => $r->n_erros,
				'mensagem' => $r->texto
			);
		}
		
		$tabelas = $excel_model->exporta($registros, $cabecalhos, "xls", "relatorio_cliente_" . $id_cliente);
		
		return $tabelas;

	}

	function exportaRelatorioDetalhado($id_envio, $registro) {
		$excel_model = new PC4_Util_Excel();
		$envios_model = new PC4_Crud_Newsletter_Envio();

		$info_envio = $this->listaInformacoesEnvio($id_envio, 1, -1);
		
		$envio = $envios_model->ve($id_envio);
		$envios = $this->listaEnvios($envio->id_clientes, 1, 1);
		$envio = $envios[0];
		$titulo =
			"<table>
				<tr>
					<td colspan='3'><strong>Data In&iacute;cio:</strong> $envio->data_inicio</td>
				</tr>
				<tr>
					<td colspan='3'><strong>Data Fim:</strong> $envio->data_conclusao</td>
				</tr>
				<tr>
					<td colspan='3'><strong>Mensagem:</strong> $envio->texto</td>
				</tr>
			</table>";
		
		$registros = array();
		$outras_info = $registro[0];
		$cabecalhos = array(
				'contato' => 'Contato',
				'status' => 'Status',
				'data_enviado' => 'Data Enviado'
			);
		
		foreach ($info_envio as $r) {
			$registros[] = array(
				'contato' => $r->contato,
				'status' => $r->status,
				'data_enviado' => $r->data_envio
			);
		}
		$tabelas = $excel_model->exporta($registros, $cabecalhos, "xls", "relatorio_envio_" . $id_envio, $titulo);
		
		return $tabelas;
	}

}
?>